<?

App::import('Sanitize');
App::import('Validation');

class UsuariosController extends AppController
{
	var $name = 'Usuarios';
	var $layout = "usuarios";
	var $components = array('UserSession');
	var $uses = array('Usuario','Localidad');
	var $permissions=array(10,100);


//---------------------------------------------------------------------------
//	PAGES
//---------------------------------------------------------------------------
	function index ()
	{
		//$this->redirect(array('controller'=>'usuarios', 'action'=>'account'));
	}

	function account ($id = null)
	{
		//esta funcion debe cargar los datos correspondientes al usuario para permitirle editar su cuenta

		//fuerzo el logueo del usuario
		$user = $this->Usuario->find("first");
		$this->UserSession->start($user);


		//Chequeo de la sesion y obtengo el usuario en caso de que este logeado.
		$user = $this->UserSession->get();

		//chequeo los permisos
		if ( $user['Usuario']['type'] != $id ){
			$this->Session->setFlash('Usted no tiene permiso para administrar este usuario.', 'default', array('class' => 'general_error'), 'general_error');
			$this->redirect(array('controller'=>'dashboard', 'action'=>'index'));
		}

		$this->set('user', $user);
	}

	function logout()
	{
		$this->UserSession->stop(); exit;
	}

	function add()
	{
		//$this->layout = 'principal';

		if($this->UserSession->userLogued()){
			$this->redirect(array('controller'=>'dashboard', 'action'=>'index'));exit;
		}

		$values = $default_values= array('Usuario' =>array('username'=> '', 'nombre'=> '', 'apellido'=> '', 'direccion'=> '', 'telefono'=> '', 'email'=> '', 'email_confirm'=>'',  'pass'=> '', 'pass_confirm'=>''));

		if($this->Session->check('fieldserrors'))
		{
			$this->Usuario->validationErrors = $this->Session->read('fieldserrors');
			$this->Session->delete('fieldserrors');

			//si esta seteado fieldserrors tambien esta seteado data
			$values = $this->Session->read('data');
			$values ['Usuario'] = array_merge($default_values['Usuario'], $values['Usuario']);
			$this->Session->delete('data');
		}

		$provincias = $this->Localidad->getProvincias();
		$this->set('provincias', $provincias);
		$this->set('data', $values);

	}

	function edit ($id=0)
	{
		//Chequeo de la sesion y obtengo el usuario en caso de que este logeado.
		$user = $this->UserSession->get();

		//chequeo los permisos
		if ($user['Usuario']['id'] != $id){
			$this->Session->setFlash('Usted no tiene permisos para editar este usuario', 'default', array('class' => 'general_error'), 'general_error');
			$this->redirect(array('controller'=>'usuarios', 'action'=>'index'));
			exit;
		}
		$user['Usuario']['email_confirm'] = '';
		$values = $default_values= $user;

		if($this->Session->check('fieldserrors'))
		{
			$this->Usuario->validationErrors = $this->Session->read('fieldserrors');
			$this->Session->delete('fieldserrors');

			//si esta seteado fieldserrors tambien esta seteado data
			$values = $this->Session->read('data');
			$values ['Usuario'] = array_merge($default_values['Usuario'], $values['Usuario']);
			$this->Session->delete('data');
		}

			$this->set('user', $user);
			$this->set('data', $values);
	}

// //---------------------------------------------------------------------------
// //	FUNCTIONS 
// //---------------------------------------------------------------------------

	function save ()
	{
		if(($this->UserSession->userLogued())&&(!isset($this->data['Usuario']['id']) || empty($this->data['Usuario']['id']))){
			//caso en el que el usuario esta logueado y desea registrarse
			$this->redirect(array('controller'=>'dashboard', 'action'=>'index'));exit;
		}

		if(!$this->Usuario->add($this->data)){
			$this->Session->setFlash("Ops! ocurrio un error al guardar el usuario, por favor intentelo nuevamente", 'default', array('class' => 'general_error'), 'general_error');
			$this->Session->write('fieldserrors', $this->Usuario->invalidFields());
			$this->Session->write('data', $this->data);
			if(!isset($this->data['Usuario']['id']) || empty($this->data['Usuario']['id']))
			{
				$this->redirect(array('controller'=>'usuarios', 'action'=>'add'));exit;
			}
			else
			{
				$this->redirect(array('controller'=>'usuarios', 'action'=>'edit', $this->data['Usuario']['id']));exit;
			}
		}else{// si se edito bien el usuario entonces redirijo a index
			$this->redirect(array('controller'=>'usuarios', 'action'=>'index'));exit;
		}
	}

	function delete ($id)
	{
		//Chequeo de la sesion y obtengo el usuario en caso de que este logeado.
		$user = $this->UserSession->get();
		
		//chequeo los permisos
		if (!in_array($user['Usuario']['type'], $this->permissions) ){
			$this->Session->setFlash('Usted no tiene permiso para acceder a esta pagina.', 'default', array('class' => 'general_error'), 'general_error');
			$this->redirect(array('controller'=>'users', 'action'=>'index'));
		}

		if($aUser = $this->Usuario->exist($user, $id))
		{
			if($this->Usuario->del($id))
			{
				$this->Session->setFlash("Usuario ".$aUser['Usuario']['nombre']." eliminado", 'default', array('class' => 'general_msg'), 'general_msg');
			}
			else
			{
				$this->Session->setFlash('Hubo un problema al eliminar el usuario, please try it again', 'default', array('class' => 'general_error'), 'general_error');
			}
		}
		else
		{
			$this->Session->setFlash('Usted no tiene permiso  para eliminar este usuario', 'default', array('class' => 'general_error'), 'general_error');
		}
		$this->redirect(array('controller' => 'usuarios', 'action' => 'index'));exit;
	}

	function getCiudades()
	{
		$provincia = $this->data['0'];
		$ciudades = $this->Localidad->getCiudades($provincia);
		$response = "";
		$i=0;
		foreach($ciudades as $ciudad){
			if($i != 0){
				$response .= "|";
			}
			$response .= $ciudad['Localidad']['id']."$".$ciudad['Localidad']['ciudad'];
			$i++;
		}
		exit($response);
	}
}
?>
